package com.zb.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zb.entity.ZjAdmWxTemplateContent;
import com.zb.entity.dto.WxTemplateContent;
import com.zb.mapper.ZjAdmWxTemplateContentMapper;
import com.zb.service.ZjAdmWxTemplateContentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 * 后台微信消息模板库详细内容表 服务实现类
 * </p>
 *
 * @author WEN
 * @since 2023-07-11
 */
@Service
public class ZjAdmWxTemplateContentServiceImpl extends ServiceImpl<ZjAdmWxTemplateContentMapper, ZjAdmWxTemplateContent> implements ZjAdmWxTemplateContentService {
    @Autowired
    private ZjAdmWxTemplateContentMapper templateContentMapper;

    @Override
    public void save(Long admWxTemplateId, List<WxTemplateContent> content, List<Long> delContentIds) {
        if (null != delContentIds && delContentIds.size() > 0) {
            this.removeByIds(delContentIds);
        }
        List<ZjAdmWxTemplateContent> adds = new ArrayList<>();
        List<ZjAdmWxTemplateContent> updates = new ArrayList<>();

        ZjAdmWxTemplateContent ct = null;
        for (WxTemplateContent templateContent : content) {
            Assert.isTrue(null == templateContentMapper.existByName(admWxTemplateId, templateContent.getName()),
                    "消息模板内容的关键词已经存在！", templateContent.getName());

            ct = new ZjAdmWxTemplateContent();
            ct.setAdmWxTemplateId(admWxTemplateId);
            ct.setName(templateContent.getName());

            if (null != templateContent.getId()) {
                updates.add(ct);
                continue;
            }

            ct.setId(IdWorker.getId());
            adds.add(ct);
        }
        if (adds.size() > 0) this.saveBatch(adds);
        if (updates.size() > 0) this.updateBatchById(updates);
    }

    // 根据关键词模糊搜索，并返回后台微信消息模板库表ID
    @Override
    public List<Long> getAdmWxTemplateIdByName(String content) {
        QueryWrapper<ZjAdmWxTemplateContent> wrapper = new QueryWrapper();
        wrapper.select("adm_wx_template_id");
        wrapper.like("name", content);
        List<Long> admWxTemplateIdList = this.list(wrapper).stream().map(ZjAdmWxTemplateContent::getAdmWxTemplateId).collect(Collectors.toList());
        if (admWxTemplateIdList.isEmpty()) {
            admWxTemplateIdList.add(-1L);
        }
        return admWxTemplateIdList;
    }

    // 根据后台微信消息模板库表ID获取模板关键词
    @Override
    public List<WxTemplateContent> getByAdmWxTemplateId(Long admWxTemplateId) {
        return templateContentMapper.getByAdmWxTemplateId(admWxTemplateId);
    }
}
